'''
Created on 18/04/2013

@author: jean
'''
from pm.database import db
from pm.models.UsuariosRoles import UsuariosRoles
from pm.models.Usuarios import Usuarios

class Roles(db.Model):
    '''
    Clase que representa los roles existentes en el sistema
    '''
    __tablename__ = 'roles'
    id_rol = db.Column(db.Integer, primary_key=True, nullable=False)
    '''
       PrimaryKey de la tabla
    '''
    nombre = db.Column(db.String(30), unique=True, nullable=False)
    '''
       Nombre o codigo del rol    
    '''
    descripcion = db.Column(db.String(50), nullable=False)
    '''
       Descripicion externa del rol
    '''
    activo = db.Column(db.Boolean, nullable=False)
    '''
       Indica si el Rol se encuentra activo
    '''
    abreviacion = db.Column(db.String(10), nullable=False)
    '''
       Abreviacion del Rol
    '''    

    def __init__(self, nombre = '', descripcion = '', activo = True, abreviacion = ''):
        '''
        
        @param nombre: nombre del Rol
        @param descripcion: descripcion del rol
        @param activo: indica si el rol esta o no activo
        @param abreviacion: palabra que representa al rol       
        '''
        self.nombre = nombre
        self.descripcion = descripcion
        self.activo = activo
        self.abreviacion = abreviacion
    
    def __repr__(self):
        return '{id_rol:%s, nombre:%s, descripcion:%s, abreviacion:%s}' % (self.id_rol, self.nombre, self.descripcion, self.abreviacion)
    
    def __json__(self):
        '''
         devuelve el json que representa a Roles
        '''
        return {'id':self.id_rol , 
                'nombre': self.nombre, 
                'descripcion': self.descripcion, 
                'activo': self.activo , 
                'abreviacion': self.abreviacion
                }
        
def getRolesByUserName(username):
    listaRoles = []
    usuario = Usuarios.query.filter(Usuarios.user_name == username).one()
    usuariosroles = UsuariosRoles.query.filter(UsuariosRoles.id_usuario == usuario.id_usuario)
    for ur in usuariosroles:
        rolesAux = Roles.query.filter(Roles.id_rol == ur.id_rol)
        for r in rolesAux:
            listaRoles.append(r.id_rol)
    return listaRoles